package com.sm.service;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

import com.sm.dao.AppConfigMapper;
import com.sm.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.sm.dao.UserMapper;
import com.sm.model.UserRefereesNumber;

/**
 *	团队pk榜service
 * @author 60915
 */
@Service
public class TeamPankService {

	@Autowired
	private UserMapper userMapper;
	@Autowired
	private AppConfigMapper appConfigMapper;


	/**
	 *	查询用户的推荐人数的排行榜
	 * @return
	 */
	public List<UserRefereesNumber> selectUserPank(){

		//查询所有用户
		List<User> users = userMapper.selectAllUser();
		String teamPkBeginTime = appConfigMapper.selectByKey("team_pk_begin_time").getValue();
		String teamPkEndTime = appConfigMapper.selectByKey("team_pk_end_time").getValue();
		if (users == null || users.size() <= 1) {    //判断查询到的所有用户如果少于或者等于1个人。就不用进行排行。直接返回null
			return null;
		} else {
			//创建一个UserRefereesNumber集合存放用户以及其推荐的人数。
			List<UserRefereesNumber> userRefereesNumbers = new ArrayList<UserRefereesNumber>();

			for (User user : users) {    //遍历所有的用户
				int refereesUserId = user.getUserId();    //获取每个用户的id作为推荐人id

				int sum = userMapper.selectRefereesUserNumber(refereesUserId, teamPkBeginTime, teamPkEndTime); //通过用户id查询器所有的推荐的人

				//创建一个userRefereesNumber对象，存入用户和其推荐的人数
				UserRefereesNumber userRefereesNumber = new UserRefereesNumber(user, sum);

				userRefereesNumbers.add(userRefereesNumber);//将创建的userRefereesNumber对象存入集合中。

			}

			//根据推荐人数进行倒序排序
			userRefereesNumbers.sort(Comparator.comparing(UserRefereesNumber::getNumber).reversed());
			return userRefereesNumbers.stream().limit(10).collect(Collectors.toList());
//			if (userRefereesNumbers.size() <= 10) {
//				return userRefereesNumbers;
//			} else {
//				return userRefereesNumbers.subList(0, 10);
//			}

		}
	}




}
